<?php
/**
 *    1. 控制器类统一放在Ctrl命名空间
 *    2. 控制器类名统一以Ctrl结尾
 *    3. 控制器负责：(1)参数接收 (2)参数合法性校验 (3)调用业务逻辑层 (4)输出结果
 *    4. 返回错误不要相同，便于快速定位问题
 *    5. 不要直接将idip、经分接口、paas接口、db、Redis错误返回给客户端。错误信息应该经过脱敏处理之后返回友好的提示信息
 *    6. 框架使用说明文档：https://ulink.qq.com/ulinksdk/doc/ulink_frame/manual.html
 *    7. 使用过程中遇到任何问题请企业微信联系 ronzheng
 */

namespace Ctrl;

use Lib\Base\Request;
use Lib\Base\Validate;
use Logic\DemoLogic;
use Lib\Db\Query;

class DemoCtrl
{
    public function __construct()
    {
    }

    /**
     * IDIP调用
     */
    public function idipTest()
    {
        //参数接收
        $data['openid'] = Request::param('iUin');
        $data['area'] = Request::param('sArea');
        $data['platid'] = Request::param('sPlatId');
        $data['partition'] = Request::param('sPartition');

        //参数校验
        if (!Validate::checkOpenid($data['openid'], 'wq')) {
            outputJson(-1, '系统繁忙，请稍后再试！');
        }

        if (!Validate::checkPartition($data['partition'])) {
            outputJson(-2, '系统繁忙，请稍后再试！');
        }

        if (!Validate::checkArea($data['area'])) {
            outputJson(-3, '系统繁忙，请稍后再试！');
        }

        if (!Validate::checkPlat($data['platid'])) {
            outputJson(-4, '系统繁忙，请稍后再试！');
        }

        //调用Logic层处理业务逻辑
        $demoLg = new DemoLogic();
        $rtnData = $demoLg->getTaskPoint($data);

        //输出处理结果
        if ($rtnData === false) {
            outputJson(-5, '系统繁忙，请稍后再试！');
        } else {
            outputJson(0, 'success', ['score' => $rtnData]);
        }
    }

    /**
     * DB、Redis查询操作
     */
    public function getUserInfo()
    {
        //参数接收
        $openid = Request::param('iUin');

        //参数校验
        if (!Validate::checkOpenid($openid, 'wq')) {
            outputJson(-7, '系统繁忙，请稍后再试！');
        }

        //调用Logic层处理业务逻辑
        $demoLg = new DemoLogic();
        $rtnData = $demoLg->getUserInfo($openid);

        //结果输出
        if ($rtnData === false) {
            outputJson(-8, '系统繁忙，请稍后再试！');
        } else {
            outputJson(0, 'success', $rtnData);
        }
    }

    /**
     * 脏字过滤
     */
    public function checkDirty()
    {
        //参数获取
        $content = Request::param('content');

        //参数校验
        if ($content == '' || \mb_strlen($content) > '10') {
            outputJson(-9, '内容不能为空且不超过10个字');
        }

        //调用Logic层处理业务逻辑
        $demoLg = new DemoLogic();
        $rtnData = $demoLg->filterDirtyWords($content);

        //结果输出
        outputJson(0, 'success', ['content' => $rtnData]);
    }
}